#include "stdafx.h"
#include ".\GroupedPolygon.h"
CGroupedPolygon::CGroupedPolygon(void)
{
	m_pMultiPolygon = NULL;
	Clear();
}

CGroupedPolygon::~CGroupedPolygon(void)
{
	Clear();
}

void		CGroupedPolygon::SetMultiPolygon( CMultiPolygon *pMP )
{
	m_pMultiPolygon = pMP;
}

void		CGroupedPolygon::Clear()
{
	m_arGroupedPolys.clear();
}

int			CGroupedPolygon::Size()
{
	return (int)m_arGroupedPolys.size();
}

CGroupIdx	&CGroupedPolygon::GetAt( int idx )
{
	assert( idx>=0 && idx<Size() );
	return m_arGroupedPolys[idx];
}

void		CGroupedPolygon::Add( CGroupIdx group )
{
	//m_arGroupedPolys.insert( group );
	m_arGroupedPolys.push_back( group );
}

void		CGroupedPolygon::RemoveAt( int idx )
{
	m_arGroupedPolys.erase( m_arGroupedPolys.begin() + idx );
}


void		CGroupedPolygon::Draw( int nIdx, CDC *pDC, BOOL bShowVertices, BOOL bShowVertexIndices )
{
	CGroupIdx gpidx = GetAt( nIdx );

	for( int i=0; i<gpidx.Size(); i++ )
	{
		CPolygon *pPoly = m_pMultiPolygon->GetPolygon( gpidx.GetAt(i) );
		assert( pPoly );
		pPoly->Draw( pDC );

		if( bShowVertices )
		{
			pPoly->DrawVertices( pDC );
		}

		if( bShowVertexIndices )
		{
			pPoly->ShowVertexIndices( pDC );
		}
	}
}

